/**
 * Created by Administrator on 2017/9/22 0022.
 */
var express=require('express');
var router=express.Router();
var User=require('../models/User');
var Content=require('../models/Content');

//定义统一返回格式
var responseData;
router.use(function(req,res,next){
    responseData={
        code:0,
        message:''
    };
    next();
});

/*
* 用户注册
*    注册逻辑：
*    1.用户名不能为空
*    2.密码不能为空
*    3.两次输入密码必须一致
*
*    1.用户是否已经被注册
*       数据库查询
* */
router.post('/user/register',function(req,res,next){
    //定义变量获取存放的值
   var username=req.body.username;
   var password=req.body.password;
   var repassword=req.body.repassword;
    //用户名不能为空
    if(username==''){
        responseData.code=1;
        responseData.message='用户名不能为空';
        res.json(responseData);
        return;
    }
    //密码不能为空
    if(password==''){
        responseData.code=2;
        responseData.message='密码不能为空';
        res.json(responseData);
        return;
    }
    //两次输入密码必须一致
    if(repassword!=password){
        responseData.code=3;
        responseData.message='两次输入密码不一致';
        res.json(responseData);
        return;
    }
    //用户名是否已经被注册了，如果数据库中已经存在和我们要注册的用户名同名的数据
    //，表示该用户名已经被注册了
     User.findOne({
         username:username,
     }).then(function(userInfo){
         if(userInfo){
             responseData.code=4;
             responseData.message='该用户已存在';
             res.json(responseData);
             return;
         }
         //用户保存到数据库
         var user=new User({
             username:username,
             password:password
         });
        return user.save();
     }).then(function(newUserInfo){
       responseData.message='注册成功';
       res.json(responseData);
     });
});
//登录路由
router.post('/user/login',function(req,res){
    var username=req.body.username;
    var password=req.body.password;

    if(username==''|| password==''){
        responseData.code=1;
        responseData.message='用户名和密码不能为空';
        res.json(responseData);
        return;
    }

    //查询数据库中相同用户名和密码是否存在，如果存在，则登录成功
    User.findOne({
        username:username,
        password:password
    }).then(function(userInfo){
        if(!userInfo){
            responseData.code=2;
            responseData.message='用户名或密码错误';
            res.json(responseData);
            return;
        }
        //用户名和密码是正确的
        responseData.message='登录成功';
        //传递给前端显示的信息
        responseData.userInfo={
          _id:userInfo._id,
          username:userInfo.username
        };
        req.cookies.set('userInfo',JSON.stringify({
            _id:userInfo._id,
            username:userInfo.username
        }));
        res.json(responseData);
        return;
    });
});

//退出的方法
router.get('/user/logout',function(req,res){
    req.cookies.set('userInfo',null);
    res.json(responseData);
});
/*
* 获取指定文章的所有评论
* */
router.get('/comment',function(req,res){
    var contentId=req.query.contentid||'';
    Content.findOne({
        _id:contentId
    }).then(function(content){
        responseData.data=content.comments;
            res.json(responseData);
    });
});

/*
* 评论提交
* */
router.post('/comment/post',function(req,res){
    //内容id
    var contentId=req.body.contentid||'';
    postData={
        username:req.userInfo.username,
        postTime:new Date(),
        content:req.body.content
    }
    //查询当前有这篇内容的信息
    Content.findOne({
        _id:contentId
    }).then(function(content){
        content.comments.push(postData);
        return content.save();
    }).then(function(newContent){
        responseData.message='评论成功';
        responseData.data=newContent;
        res.json(responseData);
    })
});
module.exports=router;